# Copyright Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
################################################################################
#
package(default_visibility = ["//visibility:public"])

load("@io_bazel_rules_webtesting//web:web.bzl", "browser", "web_test_archive")

# Override of firefox web_test_archive so that the archive is selected based on platform.
web_test_archive(
    name = "firefox_archive",
    testonly = True,
    archive = select({
        "@io_bazel_rules_webtesting//common/conditions:linux": "@org_mozilla_firefox_amd64//file",
        "@io_bazel_rules_webtesting//common/conditions:mac": "@org_mozilla_firefox_macos//file",
    }),
    extract = "build",
    named_files = select({
        "@io_bazel_rules_webtesting//common/conditions:linux": {"FIREFOX": "firefox/firefox"},
        "@io_bazel_rules_webtesting//common/conditions:mac": {"FIREFOX": "Firefox.app/Contents/MacOS/firefox"},
    }),
    visibility = ["//dev-infra/browsers:__subpackages__"],
)

# Override of geckodriver web_test_archive so that the archive is selected based on platform.
web_test_archive(
    name = "geckodriver_archive",
    testonly = True,
    archive = select({
        "@io_bazel_rules_webtesting//common/conditions:linux": "@org_mozilla_geckodriver_amd64//file",
        "@io_bazel_rules_webtesting//common/conditions:mac": "@org_mozilla_geckodriver_macos//file",
    }),
    extract = "build",
    named_files = {"GECKODRIVER": "geckodriver"},
    visibility = ["//dev-infra/browsers:__subpackages__"],
)

browser(
    name = "firefox",
    disabled = select({
        # TODO: Consider adding support for Windows. Requires a portable version of
        # Firefox. Official distribution only ships with installers.
        "@io_bazel_rules_webtesting//common/conditions:windows": "Firefox is not supported on Windows",
        "//conditions:default": None,
    }),
    metadata = "firefox.json",
    visibility = ["//visibility:public"],
    deps = select({
        "@io_bazel_rules_webtesting//common/conditions:windows": [],
        "//conditions:default": [
            "@io_bazel_rules_webtesting//go/wsl",
            ":firefox_archive",
            ":geckodriver_archive",
        ],
    }),
)

# Make source files available for distribution via pkg_npm
filegroup(
    name = "files",
    srcs = glob(["*"]),
)
